package hao.bk.searchMap;

import hao.bk.royalmap.SearchBarLayout;
import hao.bk.royalmap.GeneralAnimationUtils;
import hao.bk.royalmap.HeaderButton;
import hao.bk.royalmap.HeaderLayout;
import hao.bk.royalmap.R;
import hao.bk.royalmap.OnBackPressedInterface;
import hao.bk.royalmap.RoyalMapActivity;
import hao.bk.sql.bo.Typeshop;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;

/**
 * Hiện thị chức năng search vị trí
 * 
 * @author haoDV
 * 
 */
public class SearchMapGeneralLayout extends RelativeLayout implements 
		OnClickListener,OnBackPressedInterface{

	private RoyalMapActivity main;
	public FrameLayout contentFrame;
	protected HeaderLayout contactHeader;
	protected SearchBarLayout searchBarLayout;
	/**vị trí hiện tại */
	public HeaderButton tabFromLocal;

	/** vị trí muốn đến */
	private HeaderButton tabToLocal;
	/** Địa điểm yêu thích */
	private HeaderButton tabFavorite;
	
	protected int typeshopId;
	
	/** Trạng thái khi tìm kiếm thông tin các loại cửa hàng */
	public static final int SEARCHED_TYPESHOP_STATE = 0;
	/** trạng thái các tab  */
	public static final int TAB_SEARCH_FROM = 0;
	public static final int TAB_SEARCH_TO = 1;
	public static final int TAB_SEARCH_FAVORITE = 2;
	protected HeaderButton[] tabs = new HeaderButton[3];
	public int activeTabs = TAB_SEARCH_FROM;
	
	protected int searchingAreaId = SEARCHED_TYPESHOP_STATE;
	
	public LocalTypeshopLayout localTypeshopLayout;
	public LocalShopLayout localShopLayout;
	
	public SearchMapGeneralLayout(Context context) {
		super(context);
		main = (RoyalMapActivity) context;
		inflate(main, R.layout.searchmap, this);
	}

	/**
	 * Khởi tạo các tham số cho searchmap
	 */
	public void initParams() {
		contentFrame = (FrameLayout) findViewById(R.id.searchmap_content_frame);
		// khởi tạo 3 tab
		contactHeader = (HeaderLayout) findViewById(R.id.searchmap_tab);
		searchBarLayout = (SearchBarLayout)findViewById(R.id.searchmap_searchbar);
		contactHeader.setHeaderTitle(main.getResources().getString(
				R.string.searchmap_header_back));
		LinearLayout view = new LinearLayout(main);
		view = (LinearLayout) inflate(main, R.layout.searchmap_tabs, view);
		contactHeader.addContentFrame(view);

		tabFromLocal = (HeaderButton) findViewById(R.id.searchmap_from_local_btn);
		tabFromLocal.setTextHeader(main.getResources().getString(
				R.string.searchmap_from_local));
		tabFromLocal.setOnClickListener(this);
		tabs[0] = tabFromLocal;
		
		tabToLocal = (HeaderButton) findViewById(R.id.searchmap_to_local_btn);
		tabToLocal.setTextHeader(main.getResources().getString(
				R.string.searchmap_to_local));
		tabToLocal.setOnClickListener(this);
		tabs[1] = tabToLocal;
		tabFavorite = (HeaderButton)findViewById(R.id.searchmap_favorite_local_btn);
		tabFavorite.setTextHeader(main.getResources().getString(
				R.string.searchmap_favorite_local));
		tabFavorite.setOnClickListener(this);
		tabs[2] = tabFavorite;
		// mặc định là tab muốn đến
	    updateTypeshopList();
	    updateActiveTab(TAB_SEARCH_TO, true);
	    main.setOnBackPressedInterface(this);
	
	}
	
	public void onClick(View v) {
		int id = v.getId();
		if (id == R.id.searchmap_from_local_btn){
			if (TAB_SEARCH_FROM == activeTabs){
				return;
			}
		//hiển thị danh sách các cửa hàng
		updateShopList();
		updateActiveTab(TAB_SEARCH_FROM, true);
		} else if (id == R.id.searchmap_to_local_btn){
			if (TAB_SEARCH_TO == activeTabs){
				return;
			}
			//hiển thị danh sách các nhóm cửa hàng
			updateTypeshopList();
			GeneralAnimationUtils.startRightToLeft(main.fullTransperentLnl,
					localTypeshopLayout);
			updateActiveTab(TAB_SEARCH_TO, true);
		}else if(id == R.id.searchmap_favorite_local_btn){
			if(TAB_SEARCH_FAVORITE == activeTabs){
				return;
			}
			//hiển thị danh sách các địa điểm yêu thích
			updateFavoriteShopList();
			updateActiveTab(TAB_SEARCH_FAVORITE, true);

		}
	}
	
	public void updateTypeshopInfo(Typeshop typeshop) {
		typeshopId = typeshop.getId();
	}
	/**
	 * 3 phương thức cho 3 tabs
	 */
	/** Cập nhật danh sách các cửa hàng */
	public void updateShopList() {
		// cập nhật danh sách các cửa hàng từ tab hiện tại
		LocalShopInFromTabLayout layout = new LocalShopInFromTabLayout(main);
		addContentFrame(layout);
		/** 1 lấy toàn bộ các nhà hàng trong DB*/
		layout.fillShops(1);
	}
	/** Cập nhật danh sách các địa điểm yêu thích*/
	public void updateFavoriteShopList() {
		LocalShopInFromTabLayout layout = new LocalShopInFromTabLayout(main);
		addContentFrame(layout);
		/** 2, lấy danh sách các nhà hàng yêu thích */
		layout.fillShops(2);
	}

	/** cập nhật danh sách các loại cửa hàng*/
	public void updateTypeshopList() {
		// cập nhật danh sách các loại cửa hàng
		if (localTypeshopLayout == null) {
			localTypeshopLayout = new LocalTypeshopLayout(main);
		}
		addContentFrame(localTypeshopLayout);
		localTypeshopLayout.fillTypeshops();
	}
				
	// Thêm nội dung vào khung nội dung
	public void addContentFrame(View view) {
		contentFrame.removeAllViews();
		RelativeLayout.LayoutParams param = new LayoutParams(
				LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
		contentFrame.addView(view, param);
	}

	public void updateActiveTab(int tabIndex, boolean isActive) {
		activeTabs = tabIndex;

		if (tabIndex < 0 || tabIndex > 2) {
			return;
		}

		if (isActive) {
			for (int i = 0; i < tabs.length; i++) {
				if (tabIndex == i) {
					tabs[i].setHeaderFocus(true);
				} else {
					tabs[i].setHeaderFocus(false);
				}
			}
		} else {
			tabs[tabIndex].setHeaderFocus(false);
		}
	}

		@Override
	public void onBackPressed() {
		main.moveTabSearchMapToHome();	
		main.setOnBackPressedInterface(null);
		
	}
		/**
		 * cập nhật icon của favorite
		 * 
		 * @param iv
		 * @param isFav
		 */
		public static void updateFavoriteIcon(ImageView iv, boolean isFav) {
			int resId = R.drawable.searchmap_favorite_remove;
			if (!isFav) {
				resId = R.drawable.searchmap_favorite_add;
			}
			iv.setImageResource(resId);
		}

}
